//--- OBJECT WRITE BEGIN ---
new GuiControl(LoadFileDlg) {
   Profile = "GuiDialogProfile";
   HorizSizing = "right";
   VertSizing = "bottom";
   Position = "0 0";
   Extent = "800 600";
   MinExtent = "8 8";
   Visible = "1";
      fitParentHeight = "0";
      fitParentWidth = "0";
      helpTag = "0";

   new GuiWindowCtrl() {
      Profile = "GuiWindowProfile";
      HorizSizing = "center";
      VertSizing = "center";
      Position = "36 33";
      Extent = "589 372";
      MinExtent = "8 8";
      Visible = "1";
      text = "Open File...";
      maxLength = "255";
      resizeWidth = "1";
      resizeHeight = "1";
      canMove = "1";
      canClose = "1";
      canMinimize = "1";
      canMaximize = "1";
      MinSize = "50 50";
      closeCommand = "Canvas.popDialog(LoadFileDlg);";
         fitParentHeight = "0";
         fitParentWidth = "0";
         helpTag = "0";

      new GuiButtonCtrl() {
         Profile = "GuiButtonProfile";
         HorizSizing = "left";
         VertSizing = "top";
         Position = "449 343";
         Extent = "60 20";
         MinExtent = "8 8";
         Visible = "1";
         Command = "DoOpenFileExCallback();";
         text = "Load";
         groupNum = "-1";
         buttonType = "PushButton";
            fitParentHeight = "0";
            fitParentWidth = "0";
            helpTag = "0";
      };
      new GuiButtonCtrl() {
         Profile = "GuiButtonProfile";
         HorizSizing = "left";
         VertSizing = "top";
         Position = "519 343";
         Extent = "60 20";
         MinExtent = "8 8";
         Visible = "1";
         Command = "Canvas.popDialog(LoadFileDlg);";
         text = "Cancel";
         groupNum = "-1";
         buttonType = "PushButton";
            fitParentHeight = "0";
            fitParentWidth = "0";
            helpTag = "0";
      };
      new GuiFrameSetCtrl() {
         Profile = "GuiDefaultProfile";
         HorizSizing = "width";
         VertSizing = "height";
         Position = "4 24";
         Extent = "579 310";
         MinExtent = "8 2";
         Visible = "1";
         columns = "0 245";
         rows = "0";
         borderWidth = "7";
         borderColor = "206 206 206 206";
         borderEnable = "dynamic";
         borderMovable = "dynamic";
         autoBalance = "0";
         fudgeFactor = "0";

         new GuiScrollCtrl() {
            Profile = "GuiScrollProfile";
            HorizSizing = "right";
            VertSizing = "bottom";
            Position = "0 0";
            Extent = "238 310";
            MinExtent = "8 2";
            Visible = "1";
            willFirstRespond = "1";
            hScrollBar = "dynamic";
            vScrollBar = "dynamic";
            constantThumbHeight = "0";
            childMargin = "0 0";
               fitParentHeight = "1";
               fitParentWidth = "0";

            new GuiDirectoryTreeCtrl(LoadDirTreeEx) {
               Profile = "GuiDirectoryTreeProfile";
               HorizSizing = "right";
               VertSizing = "bottom";
               Position = "2 2";
               Extent = "85 63";
               MinExtent = "8 2";
               Visible = "1";
               tabSize = "16";
               textOffset = "2";
               fullRowSelect = "0";
               itemHeight = "21";
               destroyTreeOnSleep = "0";
               MouseDragging = "0";
               MultipleSelections = "0";
                  fitParentHeight = "0";
                  fitParentWidth = "0";
            };
         };
         new GuiScrollCtrl() {
            Profile = "GuiScrollProfile";
            HorizSizing = "right";
            VertSizing = "bottom";
            Position = "245 0";
            Extent = "334 310";
            MinExtent = "8 2";
            Visible = "1";
            willFirstRespond = "1";
            hScrollBar = "alwaysOn";
            vScrollBar = "alwaysOn";
            constantThumbHeight = "0";
            childMargin = "0 0";
               fitParentHeight = "1";
               fitParentWidth = "1";

            new GuiDirectoryFileListCtrl(LoadFileListEx) {
               Profile = "GuiDirectoryFileListProfile";
               HorizSizing = "right";
               VertSizing = "bottom";
               Position = "2 2";
               Extent = "623 208";
               MinExtent = "8 2";
               Visible = "1";
               enumerate = "0";
               resizeCell = "1";
               columns = "0";
               fitParentWidth = "1";
               clipColumnText = "0";
                  fitParentHeight = "0";
            };
         };
      };
   };
};
//--- OBJECT WRITE END ---


//------------------------------------------------------------------------------
// ex: getLoadFilename("~/stuff/*.*", openStuff);
//     -- calls 'openStuff(%filename)' on dblclick or ok
//------------------------------------------------------------------------------
function getLoadFilename(%filespec, %callback, %currentFile)
{
  $GuiLoadDialogCallback = %callback;   
  if( %filespec $= "" )
   $LoadFileExFileSpec = "*.*";
  else
   $LoadFileExFileSpec = %filespec;

  Canvas.pushDialog(LoadFileDlg, 99);

  $LoadFileExFile = %currentFile;

   // If we have a current path, set the tree to it
   if( filePath( %currentFile ) !$= "" )
      LoadDirTreeEx.setSelectedPath( filePath( %currentFile ) );
      
   // Update our file view to reflect the changes
   LoadFileListEx.setPath( LoadDirTreeEx.getSelectedPath(), $LoadFileExFileSpec );
}


//--------------------------------------
function DoOpenFileExCallback()
{
  %path = LoadDirTreeEx.getSelectedPath();
  %file = LoadFileListEx.getSelectedFile();
  %cat = %path @ "/" @ %file;
  
  // MEOW
  eval( $GuiLoadDialogCallback @ "(\"" @ %cat @"\");" );

  Canvas.popDialog(LoadFileDlg);
}   

function LoadDirTreeEx::onSelectPath( %this, %path )
{
   // Update our file view to reflect the changes
   LoadFileListEx.setPath( %path, $LoadFileExFileSpec  );
}


function LoadFileListEx::onDoubleClick(%this)
{
   DoOpenFileExCallback();   
}
